package com.itheima.controller;

import com.itheima.health.dto.CheckGroupDTO;
import com.itheima.health.entity.QueryPageBean;
import com.itheima.health.entity.Result;
import com.itheima.health.service.CheckGroupService;
import io.swagger.annotations.*;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;

@RestController
@Api(tags = "检查组管理开发") // 注解打在类上
public class CheckGroupController {

    @Reference
    private CheckGroupService checkGroupService;

    @ApiOperation(value = "检查项列表查询", notes = "根据客户端请求，完成检查项所有信息列表查询")//   添加业务方法上
    @GetMapping("checkGroup/findCheckItemInfoByGroupId/{id}")
    public Result findCheckItemInfoByGroupId(@PathVariable("id") int id) {
        return new Result(checkGroupService.findCheckItemInfoByGroupId(id));
    }

    @ApiOperation(value = "分页查询", notes = "根据客户端请求，完成分页查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "currentPage", value = "当前分页页码", required = true, paramType = "form", dataType = "Integer"),
            @ApiImplicitParam(name = "pageSize", value = "每页显示记录数", required = true, paramType = "form", dataType = "Integer"),
            @ApiImplicitParam(name = "queryString", value = "查询条件", required = false, paramType = "form", dataType = "String")
    })
    @ApiResponses({
            @ApiResponse(code = 400, message = "请求参数没填好"),
            @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")
    })
    //  上述注解 添加在目标方法上！

    // 分页查询
    @PostMapping("checkGroup/findPage")
    public Result findPage(@RequestBody QueryPageBean queryPageBean) {

        return new Result(checkGroupService.findPage(queryPageBean)); // total + list
    }

    //   异常处理机制：  业务出现异常   抛出 给调用者  ： 调用者捕捉异常  处理
    //  web  全局异常处理机制   统一处理
    @PostMapping("checkGroup/add")
    public Result add(@RequestBody CheckGroupDTO checkGroupDTO) {
        return new Result(checkGroupService.saveCheckGroupInfo(checkGroupDTO));  //   业务代码实现
    }

    @DeleteMapping("checkGroup/deleteCheckGroupById/{id}")
    public Result deleteCheckGroupById(@PathVariable("id") int id) {
        return new Result(checkGroupService.updateCheckGroupById(id));  //   业务代码实现
    }

    @GetMapping("checkGroup/findAll")
    public Result findAll() {
        return new Result(checkGroupService.list());
    }
}
